package br.ufrj.dcc.smarthotel;

import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

/***
 * Classe que cria o menu principal de acordo com o template definido na mesma
 * @author Diego Xavier
 * @author Patricia Zudio
 *
 */
public class ImageAdapterMenu extends BaseAdapter {

	//Activity que contem o menu
	private Activity context;
	//Lista com os ids dos items do menu
	JSONObject[] menuItems;
	 
	/***
	 * Construtor da Classe
	 * @param context - Activity que contem o menu
	 * @param menuImageIDs - Lista com os ids das imagens que compoe o menu
	 */
    public ImageAdapterMenu(Activity context, JSONObject[] menuItems) 
    {
        this.context = context;
        this.menuItems = menuItems;
    }
    
    /***
	 * Metodo que retorna a quantidade de itens da lista de imagens do menu
	 */
	public int getCount() {
		return this.menuItems.length;
	}

	/***
	 * Metodo que retorna o item da lista de ids
	 * @param position - Posicao na lista de ids
	 */
	public Object getItem(int position) {
		return this.menuItems[position];
	}

	/***
	 * Metodo que retorna o item da lista de ids
	 * @param position - Posicao na lista de ids
	 */
	public long getItemId(int position) {
		Long id = (long) 0;
		try {
			id =  this.menuItems[position].getLong("menuID");
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return id;
	}

	/***
	 * Metodo que monta uma View para cada item da lista
	 * @param position - Posicao na lista de ids
	 * @param convertView - View que ja foi criada e pode ser reutilizada
	 * @param parent - View pai das views criadas para a cada elemento da lista
	 * @return View - View com o template montado para o item na posicao position
	 */
	public View getView(int position, View convertView, ViewGroup parent){
		ImageView imageView = null;
		try {
			//Se nao esta reaproveitando uma View deve criar um novo ImageViewer
	        if (convertView == null) {
	            imageView = new ImageView(context);
	            //Configura o layout do ImageView
	            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
	            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
	            imageView.setPadding(5, 5, 5, 5);
	        } else {
	        	//Reaproveita o imageView que nao esta sendo utilizado
	            imageView = (ImageView) convertView;
	        }
	        //seta qual imagem sera exibida
			imageView.setImageResource(this.menuItems[position].getInt("image"));
			
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        return imageView;
	}
	
}
